home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / commodore-users-of-norman / CUON_121_(06-1985).d64 / minimuf 2.o (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  4KB  |  147 lines

  1. 10 PRINT"[147]MINI M.U.F.":PRINT"COMPUTE THE MAXIMUM":PRINT"USABLE FREQUENCY"
  2. 20 PRINT"BETWEEN ANY TWO":PRINT"HAM RADIO STATIONS":PRINT"XTMR=TRANSMITTER"
  3. 30 PRINT"RCVR=RECEIVER"
  4. 40 PRINT" HIT ANY KEY TO GO ON":POKE198,0
  5. 50 GETA$:IFA$=""THEN50
  6. 90 REM - FNACS() IS THE INVERSE (ARC) COSINE FUNCTION
  7. 95 DEF FNACS(X)=-ATN(X/SQR(-X*X+1))+(null)/2
  8. 99 :
  9. 100 REM - FNS() AIDS IN ALIGNING COLUMNS OF NUMBERS
  10. 105 DEF FNS(X)=3-INT(LOG(X)/LOG(10))
  11. 110 DIM M$(37),A$(4),M(12)
  12. 120 DATA 31,28,31,30,31,30,31,31,30,31,30,31
  13. 130 FOR I=1 TO 12: READ M(I): NEXT I
  14. 140 M$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
  15. 150 R0=(null)/180
  16. 155 P1=2*(null)
  17. 160 R1=180/(null)
  18. 170 P0=(null)/2
  19. 180 PRINT"[147]     MINI M.U.F.      "
  20. 190 PRINT"XMTR (LAT,LON)";
  21. 200 INPUT L1,W1
  22. 210 IF L1=>-90 AND L1=<90 THEN 240
  23. 220 PRINT"INVALID LATITUDE:":PRINT" USE -90 TO 90"
  24. 230 GOTO 190
  25. 240 IF W1=>-360 AND W1=<360 THEN 270
  26. 250 PRINT"INVALID LONGITUDE:":PRINT" USE -360 TO 360"
  27. 260 GOTO 190
  28. 270 PRINT"RCVR (LAT,LON)";
  29. 280 INPUT L2,W2
  30. 290 IF L2=>-90 AND L2=<90 THEN 320
  31. 300 PRINT"INVALID LATITUDE:":PRINT" USE -90 TO 90"
  32. 310 GOTO 270
  33. 320 IF W2=>-360 AND W2=<360 THEN 350
  34. 330 PRINT"INVALID LONGITUDE:":PRINT" USE -360 TO 360"
  35. 340 GOTO 270
  36. 350 PRINT"DATE (DAY,#MO.)";
  37. 360 INPUT D6,M0
  38. 370 IF M0=>1 AND M0=<12 THEN 400
  39. 380 PRINT"INVALID MONTH:":PRINT" MUST BE 1 TO 12"
  40. 390 GOTO 350
  41. 400 IF D6=>1 AND D6=<M(M0) THEN 430
  42. 410 PRINT"INVALID DAY:":PRINT" MUST BE 1 TO"M(M0)""
  43. 420 GOTO 350
  44. 430 PRINT"SUNSPOT NUMBER";
  45. 440 INPUT S9
  46. 450 IF S9>0 THEN 480
  47. 460 PRINT"INVALID SUNSPOT NO.:":PRINT"MUST BE NON-NEGATIVE."
  48. 470 GOTO 430
  49. 480 PRINT"[147]     MINI M.U.F.      "
  50. 490 A$=MID$(M$,3*M0-2,3)
  51. 500 PRINT"DATE:    "D6;A$
  52. 510 PRINT"LOCATION  LAT   LONG"
  53. 520 PRINT"XMTR:    "L1;TAB(16);W1
  54. 530 PRINT"RCVR:    "L2;TAB(16);W2
  55. 540 PRINT"SUNSPOT NUMBER:"S9
  56. 550 PRINT" HIT ANY KEY TO GO ON ";: POKE 198,0
  57. 560 GET A$: IF A$="" THEN 560
  58. 570 PRINT"[147]     MINI M.U.F.      "
  59. 580 PRINT" HR"TAB(6)"MUF"TAB(12)"HR"TAB(17)"MUF"
  60. 600 L1=L1*R0
  61. 610 W1=W1*R0
  62. 620 L2=L2*R0
  63. 630 W2=W2*R0
  64. 640 FOR IT5=0 TO 11
  65. 650 T5=IT5: GOSUB 1000
  66. 660 PRINT T5;TAB(2+FNS(J9));INT(10*J9+.5)/10;
  67. 670 T5=IT5+12: GOSUB 1000
  68. 675 PRINT TAB(11);T5;TAB(13+FNS(J9));INT(10*J9+.5)/10
  69. 680 NEXT IT5
  70. 685 PRINT" TIME=UTC -- FREQ=MHZ"
  71. 690 PRINT"HIT ANY KEY TO DO MORE";: POKE 198,0
  72. 700 GET A$: IF A$="" THEN 700
  73. 710 GOTO 180
  74. 1000 REM - MINIMUF 3.5
  75. 1010 K7=SIN(L1)*SIN(L2)+COS(L1)*COS(L2)*COS(W2-W1)
  76. 1020 IF K7<=-1 THEN K7=-.99999999
  77. 1050 IF K7=>1 THEN K7=.99999999
  78. 1070 G1=FNACS(K7)
  79. 1080 K6=1.59*G1
  80. 1090 IF K6<1 THEN K6=1
  81. 1110 K5=1/K6
  82. 1120 J9=100
  83. 1130 FOR K1=1/2*K6 TO 1-1/2*K6 STEP .9999-1/K6
  84. 1140 IF K5<>1 THEN K5=.5
  85. 1160 P=SIN(L2)
  86. 1170 Q=COS(L2)
  87. 1180 A=(SIN(L1)-P*COS(G1))/(Q*SIN(G1))
  88. 1190 B=G1*K1
  89. 1200 C=P*COS(B)+Q*SIN(B)*A
  90. 1210 D=(COS(B)-C*P)/(Q*SQR(1-C^2))
  91. 1220 IF D<=-1 THEN D=-.99999999
  92. 1250 IF D=>1 THEN D=.99999999
  93. 1270 D=FNACS(D)
  94. 1280 W0=W2+SGN(SIN(W1-W2))*D
  95. 1290 IF W0<0 THEN W0=W0+P1
  96. 1310 IF W0>P1 THEN W0=W0-P1
  97. 1330 IF C<-1 THEN C=-.99999999
  98. 1350 IF C>1 THEN C=.99999999
  99. 1380 L0=P0-FNACS(C)
  100. 1390 Y1=.0172*(10+(M0-1)*30.4+D6)
  101. 1400 Y2=.409*COS(Y1)
  102. 1410 K8=3.82*W0+12+.13*(SIN(Y1)+1.2*SIN(2*Y1))
  103. 1420 K8=K8-12*(1+SGN(K8-24))*SGN(ABS(K8-24))
  104. 1430 IF COS(L0+Y2)>-.26 THEN 1520
  105. 1440 K9=0
  106. 1450 G0=0
  107. 1460 M9=2.5*G1*K5
  108. 1470 IF M9>P0 THEN M9=P0
  109. 1490 M9=SIN(M9)
  110. 1500 M9=1+2.5*M9*SQR(M9)
  111. 1510 GOTO 1770
  112. 1520 K9=(-.26+SIN(Y2)*SIN(L0))/(COS(Y2)*COS(L0)+1E-3)
  113. 1530 K9=12-ATN(K9/SQR(ABS(1-K9*K9)))*7.639437
  114. 1540 T=K8-K9/2+12*(1-SGN(K8-K9/2))*SGN(ABS(K8-K9/2))
  115. 1550 T4=K8+K9/2-12*(1+SGN(K8-K9/2-24))*SGN(ABS(K8+K9/2-24))
  116. 1560 C0=ABS(COS(L0+Y2))
  117. 1570 T9=9.7*C0^9.6
  118. 1580 IF T9=<.1 THEN T9=.1
  119. 1600 M9=2.5*G1*K5
  120. 1610 IF M9>P0 THEN M9=P0
  121. 1630 M9=SIN(M9)
  122. 1640 M9=1+2.5*M9*SQR(M9)
  123. 1650 IF T4<T THEN 1680
  124. 1660 IF (T5-T)*(T4-T5)>0 THEN 1690
  125. 1670 GOTO 1820
  126. 1680 IF (T5-T4)*(T-T5)>0 THEN 1820
  127. 1690 T6=T5+12*(1+SGN(T-T5))*SGN(ABS(T-T5))
  128. 1700 G9=(null)*(T6-T)/K9
  129. 1710 G8=(null)*T9/K9
  130. 1720 U=(T-T6)/T9
  131. 1730 G0=C0*(SIN(G9)+G8*(EXP(U)-COS(G9)))/(1+G8*G8)
  132. 1750 IF G0<G7 THEN G0=G7
  133. 1770 G2=(1+S9/250)*M9*SQR(6+58*SQR(G0))
  134. 1780 G2=G2*(1-.1*EXP((K9-24)/3))
  135. 1790 G2=G2*(1+(1-SGN(L1)*SGN(L2))*.1)
  136. 1800 G2=G2*(1-.1*(1+SGN(ABS(SIN(L0))-COS(L0))))
  137. 1810 GOTO 1880
  138. 1820 T6=T5+12*(1+SGN(T4-T5))*SGN(ABS(T4-T5))
  139. 1830 G8=(null)*T9/K9
  140. 1840 U=(T4-T6)/2
  141. 1850 U1=-K9/T9
  142. 1860 G0=C0*(G8*(EXP(U1)+1))*EXP(U)/(1+G8*G8)
  143. 1870 GOTO 1770
  144. 1880 IF G2=<J9 THEN J9=G2
  145. 1900 NEXT K1
  146. 1910 RETURN
  147.